<?php
class AcessoBSN extends GenericBSN {	
	function __construct() {
		$this->dao = new AcessoDAO();
	}

	public function consultar($vars) {
		$this->Records = $this->dao->consultarGrupo($vars['id']);
		$this->Result  = "OK";
		$this->TotalRecordCount = $this->dao->contarRegistros($this->where);   
	}

	public function consultarArvore($vars) {
		$this->Records = $this->dao->consultarArvore($vars["id"]);
		$this->Result  = "OK";
	}
	
	public function alterar($registro) {
		if (is_null($this->dao->alterar($registro))) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar alterar";
		} else {
			$this->Result  = "OK";
		}
	}
	
	public function consultarPermissoesUsuario($vars) {
		$usuarioid     = $vars['usuario'];
		$this->Records = $this->dao->consultarUsuario($usuarioid);
		$this->Result  = "OK";
	}
	
	public function consultarGruposComAcesso($vars) {
		$recurso = $vars['recurso'];
		$this->Records = $this->dao->consultarGruposComAcesso($recurso);
		$this->Result  = "OK";
	}
	
	public function atualizarGrupo($vars) {
		try {
			if ($vars['recursos'] == "") {
				$recursos = array();
			} else {
				$recursos = explode(',', $vars['recursos']);
			}
			$grupo = $vars['grupo'];
	
			if (count($recursos) > 0) {
				foreach($recursos as $rec) {
					if (!$this->dao->consultarPermissao($_SESSION['usuario']['id'], $rec)) {
						throw new Exception("Tentativa de conceder permissão que não possui ($rec).");
					}
				}
			}
			
			$this->dao->revogarPermissoes($grupo, false);
			
			foreach($recursos as $rec) {
				$registro['grupo']   = $grupo;
				$registro['recurso'] = $rec;
				$registro['acesso']  = 1;
				$res = $this->alterar($registro, false);
			}
			$this->dao->commit();
			
			$this->Result  = "OK";
			$this->Message = "Permissões salvas com sucesso!";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar atualizar permissões de acesso. " . $e->getMessage();
		}
	}
	
	public function atualizarRecurso($vars) {
		try {
			if ($vars['grupos'] == "") {
				$grupos = array();
			} else {
				$grupos = explode(',', $vars['grupos']);
			}
			$recurso = $vars['recurso'];
			$this->dao->atualizarRecurso($recurso, $grupos);
			$this->Result  = "OK";
			$this->Message = "Permissões salvas com sucesso!";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar atualizar permissões de acesso. " . $e->getMessage();
		}
	}
}
?>